//  command 添加命令名称

var program = require('commander');

program
  .command('rm <dir>')
  .description("rm something")  //描述
  .alias('r') //简称
  .option('-r, --recursive []', 'help info', 'false')
  .action(function (dir, cmd) {
    console.log(cmd)
    console.log('remove ' + dir + (cmd.recursive!=='false' ? ' recursively' : ''))
  });

program.parse(process.argv);






/* 

command函数接收三个参数：

命令名称  必须：命令后面可跟用<>或[]包含的参数；命令的最后一个参数可以是可变的，像实例中那样在数组后面加入...标志；在命令后面传入的参数会被传入到action的回调函数以及program.args数组中。
命令描述  可省略：如果存在，且没有显示调用action(fn)，就会启动子命令程序，否则会报错
配置选项  可省略：可配置noHelp、isDefault等 ,使执行命令时，将验证该命令的options，任何未知的option都将报错。但是，如果基于action的命令如果没有定义action，则不验证options。

node demo4 rm  aa -r rr

                                                                                                                                                             ✖ ⚑ ✚ ◒  
▶ node demo4 rm aa -r rr 
remove aa recursively
                                                                                                                                                             ✖ ⚑ ✚ ◒  
▶ node demo4 rm aa -r   
remove aa
                                                                                                                                                             ✖ ⚑ ✚ ◒  
▶ node demo4 rm aa   
remove aa

*/